iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0

作為非資工系的轉職仔,邁入後端工程師職涯的第四年,回顧前三年的工作內容,雖然學了很多技術跟工具,但覺得基礎不夠紮實,因此這次參加鐵人賽的主要目的是為了學習/複習基礎知識,先將基礎給打穩再繼續往下個階段前進。

這次想到的主題有很多,像是後端學習地圖、資料結構與演算法以及Google PCA 考照心得,但八月底考完PCA 證照才決定報名,打算拖到九月中才開始發文,半個月的緩衝時間也沒辦法準備三個系列文的文章量,即使真的寫得出來品質可能也不怎麼好,最後決定先完成後端學習地圖資料結構與演算法的系列,PCA 證照的部分之後再説。

不過心態上會當作訓練自己資料搜集、統整、學習並轉為文字講解的能力,秉持著志在參加不在得獎的心情,只要能夠把每個系列寫完30篇文章就好,文章也會同步發在Medium 上,如果有超出30篇文章的話,超過的部分只會在Medium!

為什麼需要學習資料結構與演算法?

有一段話我忘記在哪篇文章看過,內容意思大概是,後端工程師在實際開發階段中,有超過90%的時間都是處理一般的查詢、寫入和業務邏輯,只有不到10%的情境會需要思考資料結構與演算法,而真正厲害的工程師與一般工程師的差異就在這10%。

以我目前身邊的資深工程師為例,當遇到API 處理速度過慢或是記憶體不足的情況時,通常都是與客戶溝通說這個資料量大,本來就會跑比較久,或是限制資料量去避免記憶體不足,而不是透過改變算法解決問題。

有些人可能會說是因為時程太趕,沒時間去慢慢思考處理,實際上那些問題我有找個零碎的時間去思考調整,確實改變一下邏輯算法就能解決問題….

因此,為了不變成這樣放棄思考的工程師,學習軟體工程師必修三門課是很重要的,作為工程師你需要做的是解決問題,不是解決提出問題的人。


如何學習

說到資料結構與演算法的學習,除了上網查相關教材以外,最重要的當然就是刷題,不過盲目的刷題還不如有系統性地學習,LeetCode Explore 有提供許多資源可以學習,在The LeetCode Beginner's Guide 的課程中,有解釋該如何使用Explore Card 並有推薦學習順序,以下是Leetcode 分類的Explore Card Layer:

  1. First and Second Layers: 

    Arrays 101, Linked List, Array and String, Hash Table, Recursion, Queue & Stack, Heap, and Binary Search

  2. Second and Third Layers: 

    Recursion, Binary Tree, Binary Search Tree, Trie, N-ary Tree, and Recursion II

  3. Third and Fourth Layers: 

    Recursion II, Dynamic Programming, and Graph


系列文內容編排

文章順序基本上是按照Explore Card Layer 的階層進行,沒列出的Databases & SQL 和System Design 放到最後,而Machine Learning 101 和Decision Tree 則先不考慮,畢竟沒有要走機器學習。

不過一個Card 的內容應該需要3~5篇文章講解,絕對會超過30篇文章,超過的部分就不會每天發,可能隔週之類的~

  1. Arrays 101
  2. Linked List
  3. Array and String
  4. Hash Table
  5. Recursion
  6. Queue & Stack
  7. Heap
  8. Binary Search
  9. Binary Tree
  10. Binary Search Tree
  11. Trie
  12. N-ary Tree
  13. Recursion II
  14. Dynamic Programming
  15. Graph
  16. Databases & SQL
  17. System Design

參考資料

Explore - LeetCode

軟體工程師必修的三門課


下一篇
Day 2 - Arrays 101 - Array Introduction
系列文
非資工本科的Leetcode刷題筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言